#ifndef IU_MANAGE_H
#define IU_MANAGE_H

// 只包含必要的头文件，避免循环包含
#include "../lvgl/lvgl.h"  // 恢复这一行

#include <time.h>
#include <sys/time.h>

// 屏幕尺寸定义
#define SCREEN_WIDTH 800
#define SCREEN_HEIGHT 480
#define MAX_SELECTED_SEATS 10
#define SEAT_ROWS 5
#define SEAT_COLS 9


// 用户信息结构体定义
typedef struct
{
    char username[20];
    char password[20];
    char phone[12]; // 11位手机号+结束符
} UserInfo;

// 当前登录用户信息
extern UserInfo current_user;

// 电影数据结构
typedef struct
{
    int id;            // 电影编号
    char * name;       // 电影名称
    char * duration;   // 时长
    int price;         // 单价
    char * hall;       // 影厅
    char * times[10];  // 场次时间
    int remaining[10]; // 每场剩余票数
} Movie;

// 座位状态枚举
typedef enum {
    SEAT_AVAILABLE = 0, // 可选
    SEAT_SELECTED  = 1, // 已选
    SEAT_RESERVED  = 2  // 已预订
} SeatStatus;

// 场次信息结构 - 添加电影编号和日期
typedef struct
{
    int movie_id;                                 // 电影编号
    char date[20];                                // 日期
    char hall[5];                                 // 影厅(A/B/C/D)
    char time[10];                                // 场次时间
    int total_seats;                              // 总座位数
    int remaining_seats;                          // 剩余座位数
    SeatStatus seat_status[SEAT_ROWS][SEAT_COLS]; // 座位状态二维数组
} ShowTime;

// 日期枚举
typedef enum { DATE_TODAY, DATE_TOMORROW, DATE_DAY_AFTER_TOMORROW } DateType;

// 定义页面类型枚举
typedef struct
{
    int year;
    int month;
    int day;
    char display[10]; // 用于显示的日期字符串
} DateInfo;

// 定义页面类型枚举
typedef enum {
    PAGE_MOVIE_SELECTION, // 电影选择页面
    PAGE_TIME_SELECTION,  // 场次选择页面
    PAGE_SEAT_SELECTION   // 座位选择页面
} PageType;

// 定义订单信息结构体
typedef struct {
    char username[50];
    char phone[20];
    char movie_name[100];
    char date[20];
    char time[20];
    char seat[50];
    char ticket_number[50];
    int picked_up;  // 0表示未取票，1表示已取票
    char pickup_time[30];  // 取票时间
} OrderInfo;

// 外部全局变量声明
extern lv_obj_t * menu_screen;
extern bool menu_screen_hidden;
extern lv_timer_t * time_timer;

// 第一个界面
extern void first_screen_init(void);
extern void button_click_handler(lv_event_t * e);

// 第二个界面（广告幻灯片）
extern void create_image_slideshow(void);
extern void img_switch_timer(lv_timer_t * timer);
extern void update_time_timer(lv_timer_t * timer);
extern void set_image_adaptive(lv_obj_t * img_obj, const char * src, lv_coord_t max_w, lv_coord_t max_h);
extern void button1_click_handler(lv_event_t * e);
extern void button2_click_handler(lv_event_t * e);
extern void button3_click_handler(lv_event_t * e);

// 主菜单界面
extern void create_main_menu(void);

// 取票界面
extern void pick_up_screen_init(void);
extern void create_pick_up_keyboard(lv_obj_t * parent);
extern void pick_up_button_click_handler(lv_event_t * e);

// 买票界面
extern void buy_tickets_screen_init(void);
extern void create_login(void);
extern void create_register(void);
extern void login_button_click_handler(lv_event_t * e);

// 当前登录用户信息
extern UserInfo current_user;

#endif /* IU_MANAGE_H */